package com.linq.cool.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.linq.cool.system.domain.SysDict;
import com.linq.cool.system.domain.SysDictItem;
import com.linq.cool.system.dto.SysDictQueryDTO;

import java.util.List;

/**
 * @Author: yqlin
 * @Date: 2021/1/23 00:35
 * @Description:
 * @Version: 1.0.0
 */
public interface SysDictService extends IService<SysDict> {
    /**
     * 条件分页获取字典信息
     *
     * @param page 分页对象
     * @param dto  字典信息
     *
     * @return 条件分页结果集合
     */
    IPage<SysDict> listByPage(IPage<SysDict> page, SysDictQueryDTO dto);

    /**
     * 校验字典编码是否唯一 sys_user_type
     *
     * @param dict 字典
     *
     * @return true: 不存在 唯一 , false: 存在 不唯一
     */
    boolean checkCodeUnique(SysDict dict);

    /**
     * 新增保存字典信息
     *
     * @param dict 字典信息
     *
     * @return
     */
    boolean saveDict(SysDict dict);

    /**
     * 修改字典信息
     *
     * @param dict 字典信息
     *
     * @return
     */
    boolean updateDict(SysDict dict);

    /**
     * 批量删除字典信息
     *
     * @param dictIds 需要删除的字典ID
     *
     * @return
     */
    boolean deleteByIds(List<Long> dictIds);

    /**
     * 清空缓存数据
     */
    void clearCache();

    /**
     * 根据字典编码查询字典数据信息
     *
     * @param dictCode 字典编码
     *
     * @return 结果
     */
    List<SysDictItem> listDictItemsByDictCode(String dictCode);

    /**
     * 根据条件查询字典类型
     *
     * @param dict 字典类型信息
     *
     * @return 字典类型
     */
    List<SysDict> listByParams(SysDict dict);
}
